package com.slt.android.activitytest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    /**
     * Acitivity的3个稳定状态
     * Resumed 也就是running状态，此时activity处于栈顶，处理用户的交互
     * paused  当activity的一部分被挡住的时候进入这个状态，此时activity不会接收用户输入
     * stopped 当activity完全被覆盖时进入这个状态 此时activity不可见、仅在后台运行
     *
     */

    /**
     * 启动模式
     * singleTop--用于接收消息后显示界面这种情况、再次启动这个activity会执行onNewIntent
     * singtask--栈内复用、当该类acitivity被启动后、会清空它上面的所有activity(同样会执行onNewIntent()方法)-->同一个app内启动
     * singtask--会把另一个app内整个栈都移到当前的任务栈之上、再点N次back键、就会得到想要启动的activity-->其他app来启动已经位于另一个app后台任务栈中的singtask的activity
     * 由于singTask会清空栈上面的所有activity、所以把主Activity设置成singTask、再在onNewIntent方法中finish()-想要结束应用的时候启动一次主activity就可以结束应用了
     *
     * 关于启动模式还有一个 onActivityResult立即返回的问题-解决办法
     * http://blog.csdn.net/yang_niuxxx/article/details/78793819
     */


    /**
     * intentFlag启动模式
     * Intent.FLAG_ACTIVITY_NEW_TASK--用一个新的task来启动一个activity、启动的每个activity都在一个新的task中。
     * 该flag通常用于service中启动activity，因为service中不存在activity栈
     *
     * Intent.FLAG_ACTIVITY_NEW_TASK--与singTop相同
     *
     * Intent.FLAG_ACTIVITY_CLEAR_TOP--与singtask相同
     *
     * Intent.FLAG_ACTIVITY_NO_HISTORY--启动的activityA在启动另外的activityB时，从任务栈中移除activityA。
     */


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //创建基本的ui元素
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        //保存数据、清除资源
        super.onPause();
    }

    @Override
    protected void onStop() {
        //清除资源
        //释放系统资源、如Camera、Sensor、receivers
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        //引用会在activity销毁时销毁、而线程不会、所以清除开启的线程
        super.onDestroy();
    }
}
